Ultralight v1.4.0 Release Notes
This major new release updates the engine to latest WebKit, adds support for macOS Apple Silicon and Linux arm64 architectures, enables CSS filters (blurs, saturation, etc.), adds API to composite external image sources, and much more.
Changelog
Major Improvements
- Synchronize with upstream WebKit (Safari 16.4.1 / WebKit 615.1.18.100.1)
- Add support for Apple Silicon architecture on macOS
- Add support for ARM64 architecture on Linux
- Add support for WebP and animated WebP videos
- Add support for compositing external textures / images (new
ImageSourceAPI) - Add support for CSS filter effects (blurs, saturation, sepia, etc.) (note: not yet natively GPU accelerated, incoming in 1.4.1)
- Add support for file downloads (see
View::set_download_listener) - Add support network whitelist / blacklist (see
View::set_network_listener) - Add support for variable fonts
- Animation and smooth scroll is now driven by
Renderer::RefreshDisplay - Improve interaction and rendering of dropdown menus
- Improve support for SVG / Canvas path rendering
- Improve support for SVG / CSS clips and masks
- Improve performance of Windows port (now built via Clang)
- Improve performance of AppCore (now supports high refresh-rate monitors)
- Improve Chinese-Japanese-Korean text rendering on Linux (AppCore)
- Improve scroll animation performance
- Improve performance of the CPU renderer
Major API Changes
New Classes / Structs:
ImageSourceImageSourceProviderNetworkListenerNetworkRequestDownloadListenerConsoleMessageThreadFactory
New API Functions:
Renderer::RefreshDisplay()(must be called to update animations and scroll)View::set_display_id()View::display_id()View::set_network_listener()View::set_download_listener()View::CancelDownload()Platform::set_thread_factory()String::Hash()String(various comparison operators)Monitor::display_id()Monitor::refresh_rate()Window::EnableFrameStatistics()ShowMessageBox()
Changes to Existing API:
ViewListener::OnAddConsoleMessage()has different parametersViewConfigstruct has a new field "display_id"MessageSourceenum values have changed
Major Bugfixes
- Fix issue where
Config::user_stylesheetwould not be applied if HTML doctype was not set - Fix issue with alpha blending and opacity in the CPU renderer
- Fix issue tessellating stroked paths with round and square line-caps in the GPU renderer
- Fix issue drawing radial gradients in the GPU renderer
- Fix issue where CSS dashed borders would only be applied to an element when the border radius was rounded
- Fix issue where files would not be displayed consistently across platforms due to inconsistent mime-type mappings
- Fix issue validating SSL certificates on Linux and macOS
- Fix issue where cookies weren't applied to subdomains
- Fix issue where hard reloads weren't sending no-cache headers
- Fix issue drawing CSS box shadows outside of the initial View rectangle
- Fix issue with flickering artifacts on macOS/Metal when a Window has multiple View overlays assigned to it
- Fix issue compiling on older GCC toolchains
- Fix crash when rendering certain paths
- Fix crash in C API due to improper mappings of
ULMessageSourceandULMessageLevelenums - Fix crash when system page size is less than 16384 bytes
- Fix crash when switching networks on macOS
- Fix crash when a remote inspector backend was closed
- Fix crash when a
Viewwas destroyed with dropdown menu open - Fix crash when loading Data URIs and certain resource types
- Fix memory leaks in the CPU renderer
- Fix memory leak in JavaScriptCore
- Fix various crashes at shutdown
- Fix high CPU usage when a WebSocket connection was active
- Mitigate memory growth when drawing many Canvas elements
Useful Links
- Website
- ultralig.ht
- Support Docs
- docs.ultralig.ht
- Ultralight Team